﻿namespace NJQuery {
	using System;
	using System.ComponentModel;
	using System.Diagnostics.CodeAnalysis;

	/// <summary>
	/// Defines a jQuery UI themed or custom CSS-specified icon.
	/// </summary>
	[TypeConverter(typeof(IconConverter))]
	public struct Icon : IEquatable<Icon>, IComplexProperty {


		#region Static Readonly Fields: Standard values

		/// <summary>
		/// Specifies that no icon or a fallback icon is to be rendered depending on the context.
		/// </summary>
		public static readonly Icon None = new Icon();

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-n" class for a themed carat pointing up.
		/// </summary>
		public static readonly Icon Carat1N = new Icon("ui-icon-carat-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-ne" class for a themed carat pointing to the upper right.
		/// </summary>
		public static readonly Icon Carat1NE = new Icon("ui-icon-carat-1-ne");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-e" class for a themed carat pointing to the right.
		/// </summary>
		public static readonly Icon Carat1E = new Icon("ui-icon-carat-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-se" class for a themed carat pointing to the lower right.
		/// </summary>
		public static readonly Icon Carat1SE = new Icon("ui-icon-carat-1-se");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-s" class for a themed carat pointing down.
		/// </summary>
		public static readonly Icon Carat1S = new Icon("ui-icon-carat-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-sw" class for a themed carat pointing to the lower left.
		/// </summary>
		public static readonly Icon Carat1SW = new Icon("ui-icon-carat-1-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-w" class for a themed carat pointing to the left.
		/// </summary>
		public static readonly Icon Carat1W = new Icon("ui-icon-carat-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-1-nw" class for a themed carat pointing to the upper left.
		/// </summary>
		public static readonly Icon Carat1NW = new Icon("ui-icon-carat-1-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-2-n-s" class for a themed double carat pointing up and down.
		/// </summary>
		public static readonly Icon Carat2NS = new Icon("ui-icon-carat-2-n-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-carat-2-e-w" class for a themed double carat pointing to the left and right.
		/// </summary>
		public static readonly Icon Carat2EW = new Icon("ui-icon-carat-2-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-n" class for a themed triangle pointing up.
		/// </summary>
		public static readonly Icon Triangle1N = new Icon("ui-icon-triangle-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-ne" class for a themed triangle pointing to the upper right.
		/// </summary>
		public static readonly Icon Triangle1NE = new Icon("ui-icon-triangle-1-ne");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-e" class for a themed triangle pointing to the right.
		/// </summary>
		public static readonly Icon Triangle1E = new Icon("ui-icon-triangle-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-se" class for a themed triangle pointing to the lower right.
		/// </summary>
		public static readonly Icon TriangleSE = new Icon("ui-icon-triangle-1-se");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-s" class for a themed triangle pointing down.
		/// </summary>
		public static readonly Icon Triangle1S = new Icon("ui-icon-triangle-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-sw" class for a themed triangle pointing to the lower left.
		/// </summary>
		public static readonly Icon Triangle1SW = new Icon("ui-icon-triangle-1-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-w" class for a themed triangle pointing to the left.
		/// </summary>
		public static readonly Icon Triangle1W = new Icon("ui-icon-triangle-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-1-nw" class for a themed triangle pointing to the upper left.
		/// </summary>
		public static readonly Icon Triangle1NW = new Icon("ui-icon-triangle-1-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-2-n-s" class for a themed double triangle pointing up and down.
		/// </summary>
		public static readonly Icon Triangle2NS = new Icon("ui-icon-triangle-2-n-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-triangle-2-e-w" class for a themed double triangle pointing to the left and right.
		/// </summary>
		public static readonly Icon Triangle2EW = new Icon("ui-icon-triangle-2-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-n" class for a themed arrow pointing up.
		/// </summary>
		public static readonly Icon Arrow1N = new Icon("ui-icon-arrow-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-ne" class for a themed arrow pointing to the upper right.
		/// </summary>
		public static readonly Icon Arrow1NE = new Icon("ui-icon-arrow-1-ne");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-e" class for a themed arrow pointing to the right.
		/// </summary>
		public static readonly Icon Arrow1E = new Icon("ui-icon-arrow-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-se" class for a themed arrow pointing to the lower right.
		/// </summary>
		public static readonly Icon Arrow1SE = new Icon("ui-icon-arrow-1-se");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-s" class for a themed arrow pointing down.
		/// </summary>
		public static readonly Icon Arrow1S = new Icon("ui-icon-arrow-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-sw" class for a themed arrow pointing to the lower left.
		/// </summary>
		public static readonly Icon Arrow1SW = new Icon("ui-icon-arrow-1-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-w" class for a themed arrow pointing to the left.
		/// </summary>
		public static readonly Icon Arrow1W = new Icon("ui-icon-arrow-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-1-nw" class for a themed arrow pointing to the upper left.
		/// </summary>
		public static readonly Icon Arrow1NW = new Icon("ui-icon-arrow-1-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-2-n-s" class for a themed double arrow pointing up and down.
		/// </summary>
		public static readonly Icon Arrow2NS = new Icon("ui-icon-arrow-2-n-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-2-ne-sw" class for a themed double arrow pointing to the upper right and lower left.
		/// </summary>
		public static readonly Icon Arrow2NESW = new Icon("ui-icon-arrow-2-ne-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-2-e-w" class for a themed double arrow pointing to the left and right.
		/// </summary>
		public static readonly Icon Arrow2EW = new Icon("ui-icon-arrow-2-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-2-se-nw" class for a themed double arrow pointing to the upper left and lower right.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SENW", Justification = "This is SE NW, not a word.")]
		public static readonly Icon Arrow2SENW = new Icon("ui-icon-arrow-2-se-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowstop-1-n" class for a themed arrow pointing up, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowStop1N = new Icon("ui-icon-arrowstop-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowstop-1-e" class for a themed arrow pointing to the right, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowStop1E = new Icon("ui-icon-arrowstop-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowstop-1-s" class for a themed arrow pointing down, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowStop1S = new Icon("ui-icon-arrowstop-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowstop-1-w" class for a themed arrow pointing to the left, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowStop1W = new Icon("ui-icon-arrowstop-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-n" class for a themed thick arrow pointing up.
		/// </summary>
		public static readonly Icon ArrowThick1N = new Icon("ui-icon-arrowthick-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-ne" class for a themed thick arrow pointing to the upper right.
		/// </summary>
		public static readonly Icon ArrowThick1NE = new Icon("ui-icon-arrowthick-1-ne");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-e" class for a themed thick arrow pointing to the right.
		/// </summary>
		public static readonly Icon ArrowThick1E = new Icon("ui-icon-arrowthick-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-se" class for a themed thick arrow pointing to the lower right.
		/// </summary>
		public static readonly Icon ArrowThick1SE = new Icon("ui-icon-arrowthick-1-se");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-s" class for a themed thick arrow pointing down.
		/// </summary>
		public static readonly Icon ArrowThick1S = new Icon("ui-icon-arrowthick-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-sw" class for a themed thick arrow pointing to the lower left.
		/// </summary>
		public static readonly Icon ArrowThick1SW = new Icon("ui-icon-arrowthick-1-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-w" class for a themed thick arrow pointing to the left.
		/// </summary>
		public static readonly Icon ArrowThick1W = new Icon("ui-icon-arrowthick-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-1-nw" class for a themed thick arrow pointing to the upper left.
		/// </summary>
		public static readonly Icon ArrowThick1NW = new Icon("ui-icon-arrowthick-1-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-2-n-s" class for a themed thick double arrow pointing up and down.
		/// </summary>
		public static readonly Icon ArrowThick2NS = new Icon("ui-icon-arrowthick-2-n-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-2-ne-sw" class for a themed thick double arrow pointing to the upper right and lower left.
		/// </summary>
		public static readonly Icon ArrowThick2NESW = new Icon("ui-icon-arrowthick-2-ne-sw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-2-e-w" class for a themed thick double arrow pointing to the left and right.
		/// </summary>
		public static readonly Icon ArrowThick2EW = new Icon("ui-icon-arrowthick-2-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthick-2-se-nw" class for a themed thick double arrow pointing to the upper left and lower right.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SENW", Justification = "This is SE NW, not a word.")]
		public static readonly Icon ArrowThick2SENW = new Icon("ui-icon-arrowthick-2-se-nw");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthickstop-1-n" class for a themed thick arrow pointing up, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowThickStop1N = new Icon("ui-icon-arrowthickstop-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthickstop-1-e" class for a themed thick arrow pointing to the right, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowThickStop1E = new Icon("ui-icon-arrowthickstop-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthickstop-1-s" class for a themed thick arrow pointing down, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowThickStop1S = new Icon("ui-icon-arrowthickstop-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowthickstop-1-w" class for a themed thick arrow pointing to the left, toward and perpendicular to a line.
		/// </summary>
		public static readonly Icon ArrowThickStop1W = new Icon("ui-icon-arrowthickstop-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturnthick-1-w" class for a themed thick curved arrow originating from the bottom and curving to the left.
		/// </summary>
		public static readonly Icon ArrowReturnThick1W = new Icon("ui-icon-arrowreturnthick-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturnthick-1-n" class for a themed thick curved arrow originating from the left and curving upward.
		/// </summary>
		public static readonly Icon ArrowReturnThick1N = new Icon("ui-icon-arrowreturnthick-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturnthick-1-e" class for a themed thick curved arrow originating from the top and curving to the right.
		/// </summary>
		public static readonly Icon ArrowReturnThick1E = new Icon("ui-icon-arrowreturnthick-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturnthick-1-s" class for a themed thick curved arrow originating from the right and curving downward.
		/// </summary>
		public static readonly Icon ArrowReturnThick1S = new Icon("ui-icon-arrowreturnthick-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturn-1-w" class for a themed curved arrow originating from the bottom and curving to the left.
		/// </summary>
		public static readonly Icon ArrowReturn1W = new Icon("ui-icon-arrowreturn-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturn-1-n" class for a themed curved arrow originating from the left and curving upward.
		/// </summary>
		public static readonly Icon ArrowReturn1N = new Icon("ui-icon-arrowreturn-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturn-1-e" class for a themed curved arrow originating from the top and curving to the right.
		/// </summary>
		public static readonly Icon ArrowReturn1E = new Icon("ui-icon-arrowreturn-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowreturn-1-s" class for a themed curved arrow originating from the right and curving downward
		/// </summary>
		public static readonly Icon ArrowReturn1S = new Icon("ui-icon-arrowreturn-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowrefresh-1-w" class for a themed circular arrow with its destination pointing to the left.
		/// </summary>
		public static readonly Icon ArrowRefresh1W = new Icon("ui-icon-arrowrefresh-1-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowrefresh-1-n" class for a themed circular arrow with its destination pointing upward.
		/// </summary>
		public static readonly Icon ArrowRefresh1N = new Icon("ui-icon-arrowrefresh-1-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowrefresh-1-e" class for a themed circular arrow with its destination pointing to the right.
		/// </summary>
		public static readonly Icon ArrowRefresh1E = new Icon("ui-icon-arrowrefresh-1-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrowrefresh-1-s" class for a themed circular arrow with its destination pointing downward.
		/// </summary>
		public static readonly Icon ArrowRefresh1S = new Icon("ui-icon-arrowrefresh-1-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-4" class for a themed four-way crosshair arrows pointing up, down, left and right.
		/// </summary>
		public static readonly Icon Arrow4 = new Icon("ui-icon-arrow-4");

		/// <summary>
		/// References the jQuery UI "ui-icon-arrow-4-diag" class for a themed four-way crosshair arrows pointing diagonally towards the corners.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Diag", Justification = "Using jQuery UI names")]
		public static readonly Icon Arrow4Diag = new Icon("ui-icon-arrow-4-diag");

		/// <summary>
		/// References the jQuery UI "ui-icon-extlink" class for a themed external link symbol.
		/// </summary>
		public static readonly Icon ExtLink = new Icon("ui-icon-extlink");

		/// <summary>
		/// References the jQuery UI "ui-icon-newwin" class for a themed new window symbol.
		/// </summary>
		public static readonly Icon NewWin = new Icon("ui-icon-newwin");

		/// <summary>
		/// References the jQuery UI "ui-icon-refresh" class for a themed refresh symbol.
		/// </summary>
		public static readonly Icon Refresh = new Icon("ui-icon-refresh");

		/// <summary>
		/// References the jQuery UI "ui-icon-shuffle" class for a themed shuffle symbol.
		/// </summary>
		public static readonly Icon Shuffle = new Icon("ui-icon-shuffle");

		/// <summary>
		/// References the jQuery UI "ui-icon-transfer-e-w" class for themed two-way parallel arrows pointing in opposite directions to the left and right.
		/// </summary>
		public static readonly Icon TransferEW = new Icon("ui-icon-transfer-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-transferthick-e-w" class for themed thick two-way parallel arrows pointing in opposite directions to the left and right.
		/// </summary>
		public static readonly Icon TransferThickEW = new Icon("ui-icon-transferthick-e-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-folder-collapsed" class for a themed collapsed folder symbol.
		/// </summary>
		public static readonly Icon FolderCollapsed = new Icon("ui-icon-folder-collapsed");

		/// <summary>
		/// References the jQuery UI "ui-icon-folder-collapsed" class for a themed open folder symbol.
		/// </summary>
		public static readonly Icon FolderOpen = new Icon("ui-icon-folder-open");

		/// <summary>
		/// References the jQuery UI "ui-icon-document" class for a themed portrait document symbol.
		/// </summary>
		public static readonly Icon Document = new Icon("ui-icon-document");

		/// <summary>
		/// References the jQuery UI "ui-icon-document-b" class for a themed landscape document symbol.
		/// </summary>
		public static readonly Icon DocumentB = new Icon("ui-icon-document-b");

		/// <summary>
		/// References the jQuery UI "ui-icon-note" class for a themed notepad symbol.
		/// </summary>
		public static readonly Icon Note = new Icon("ui-icon-note");

		/// <summary>
		/// References the jQuery UI "ui-icon-mail-closed" class for a themed closed envelope symbol.
		/// </summary>
		public static readonly Icon MailClosed = new Icon("ui-icon-mail-closed");

		/// <summary>
		/// References the jQuery UI "ui-icon-mail-open" class for a themed open envelope symbol.
		/// </summary>
		public static readonly Icon MailOpen = new Icon("ui-icon-mail-open");

		/// <summary>
		/// References the jQuery UI "ui-icon-suitcase" class for a themed suitcase symbol.
		/// </summary>
		public static readonly Icon Suitcase = new Icon("ui-icon-suitcase");

		/// <summary>
		/// References the jQuery UI "ui-icon-comment" class for a themed comment symbol.
		/// </summary>
		public static readonly Icon Comment = new Icon("ui-icon-comment");

		/// <summary>
		/// References the jQuery UI "ui-icon-person" class for a themed person/user symbol.
		/// </summary>
		public static readonly Icon Person = new Icon("ui-icon-person");

		/// <summary>
		/// References the jQuery UI "ui-icon-print" class for a themed printer symbol.
		/// </summary>
		public static readonly Icon Print = new Icon("ui-icon-print");

		/// <summary>
		/// References the jQuery UI "ui-icon-trash" class for a themed trashcan symbol.
		/// </summary>
		public static readonly Icon Trash = new Icon("ui-icon-trash");

		/// <summary>
		/// References the jQuery UI "ui-icon-locked" class for a themed locked padlock symbol.
		/// </summary>
		public static readonly Icon Locked = new Icon("ui-icon-locked");

		/// <summary>
		/// References the jQuery UI "ui-icon-unlocked" class for a themed unlocked padlock symbol.
		/// </summary>
		public static readonly Icon Unlocked = new Icon("ui-icon-unlocked");

		/// <summary>
		/// References the jQuery UI "ui-icon-bookmark" class for a themed bookmark symbol.
		/// </summary>
		public static readonly Icon Bookmark = new Icon("ui-icon-bookmark");

		/// <summary>
		/// References the jQuery UI "ui-icon-tag" class for a themed tag symbol.
		/// </summary>
		public static readonly Icon Tag = new Icon("ui-icon-tag");

		/// <summary>
		/// References the jQuery UI "ui-icon-home" class for a themed home symbol.
		/// </summary>
		public static readonly Icon Home = new Icon("ui-icon-home");

		/// <summary>
		/// References the jQuery UI "ui-icon-flag" class for a themed flag symbol.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1726:UsePreferredTerms", MessageId = "Flag", Justification = "Using jQuery UI naming.")]
		public static readonly Icon Flag = new Icon("ui-icon-flag");

		/// <summary>
		/// References the jQuery UI "ui-icon-calculator" class for a themed calculator symbol.
		/// </summary>
		public static readonly Icon Calculator = new Icon("ui-icon-calculator");

		/// <summary>
		/// References the jQuery UI "ui-icon-cart" class for a themed shopping cart symbol.
		/// </summary>
		public static readonly Icon Cart = new Icon("ui-icon-cart");

		/// <summary>
		/// References the jQuery UI "ui-icon-pencil" class for a themed pencil symbol.
		/// </summary>
		public static readonly Icon Pencil = new Icon("ui-icon-pencil");

		/// <summary>
		/// References the jQuery UI "ui-icon-clock" class for a themed clock symbol.
		/// </summary>
		public static readonly Icon Clock = new Icon("ui-icon-clock");

		/// <summary>
		/// References the jQuery UI "ui-icon-disk" class for a themed disk symbol.
		/// </summary>
		public static readonly Icon Disk = new Icon("ui-icon-disk");

		/// <summary>
		/// References the jQuery UI "ui-icon-calendar" class for a themed calendar symbol.
		/// </summary>
		public static readonly Icon Calendar = new Icon("ui-icon-calendar");

		/// <summary>
		/// References the jQuery UI "ui-icon-zoomin" class for a themed zoom in symbol.
		/// </summary>
		public static readonly Icon ZoomIn = new Icon("ui-icon-zoomin");

		/// <summary>
		/// References the jQuery UI "ui-icon-zoomout" class for a themed zoom out symbol.
		/// </summary>
		public static readonly Icon ZoomOut = new Icon("ui-icon-zoomout");

		/// <summary>
		/// References the jQuery UI "ui-icon-search" class for a themed search symbol.
		/// </summary>
		public static readonly Icon Search = new Icon("ui-icon-search");

		/// <summary>
		/// References the jQuery UI "ui-icon-wrench" class for a themed wrench/tools symbol.
		/// </summary>
		public static readonly Icon Wrench = new Icon("ui-icon-wrench");

		/// <summary>
		/// References the jQuery UI "ui-icon-gear" class for a themed gear/settings symbol.
		/// </summary>
		public static readonly Icon Gear = new Icon("ui-icon-gear");

		/// <summary>
		/// References the jQuery UI "ui-icon-heart" class for a themed heart symbol.
		/// </summary>
		public static readonly Icon Heart = new Icon("ui-icon-heart");

		/// <summary>
		/// References the jQuery UI "ui-icon-star" class for a themed star symbol.
		/// </summary>
		public static readonly Icon Star = new Icon("ui-icon-star");

		/// <summary>
		/// References the jQuery UI "ui-icon-link" class for a themed chain link symbol.
		/// </summary>
		public static readonly Icon Link = new Icon("ui-icon-link");

		/// <summary>
		/// References the jQuery UI "ui-icon-cancel" class for a themed cancel/no symbol.
		/// </summary>
		public static readonly Icon Cancel = new Icon("ui-icon-cancel");

		/// <summary>
		/// References the jQuery UI "ui-icon-plus" class for a themed plus symbol.
		/// </summary>
		public static readonly Icon Plus = new Icon("ui-icon-plus");

		/// <summary>
		/// References the jQuery UI "ui-icon-plusthick" class for a themed thick plus symbol.
		/// </summary>
		public static readonly Icon PlusThick = new Icon("ui-icon-plusthick");

		/// <summary>
		/// References the jQuery UI "ui-icon-minus" class for a themed minus symbol.
		/// </summary>
		public static readonly Icon Minus = new Icon("ui-icon-minus");

		/// <summary>
		/// References the jQuery UI "ui-icon-minusthick" class for a themed thick minus symbol.
		/// </summary>
		public static readonly Icon MinusThick = new Icon("ui-icon-minusthick");

		/// <summary>
		/// References the jQuery UI "ui-icon-close" class for a themed close (X) symbol.
		/// </summary>
		public static readonly Icon Close = new Icon("ui-icon-close");

		/// <summary>
		/// References the jQuery UI "ui-icon-closethick" class for a themed thick close (X) symbol.
		/// </summary>
		public static readonly Icon CloseThick = new Icon("ui-icon-closethick");

		/// <summary>
		/// References the jQuery UI "ui-icon-key" class for a themed key symbol.
		/// </summary>
		public static readonly Icon Key = new Icon("ui-icon-key");

		/// <summary>
		/// References the jQuery UI "ui-icon-lightbulb" class for a themed lightbulb/idea symbol.
		/// </summary>
		public static readonly Icon LightBulb = new Icon("ui-icon-lightbulb");

		/// <summary>
		/// References the jQuery UI "ui-icon-scissors" class for a themed scissors/cut symbol.
		/// </summary>
		public static readonly Icon Scissors = new Icon("ui-icon-scissors");

		/// <summary>
		/// References the jQuery UI "ui-icon-clipboard" class for a themed clipboard/paste symbol.
		/// </summary>
		public static readonly Icon Clipboard = new Icon("ui-icon-clipboard");

		/// <summary>
		/// References the jQuery UI "ui-icon-copy" class for a themed copy symbol.
		/// </summary>
		public static readonly Icon Copy = new Icon("ui-icon-copy");

		/// <summary>
		/// References the jQuery UI "ui-icon-contact" class for a themed contact/rolling contact file symbol.
		/// </summary>
		public static readonly Icon Contact = new Icon("ui-icon-contact");

		/// <summary>
		/// References the jQuery UI "ui-icon-image" class for a themed image symbol.
		/// </summary>
		public static readonly Icon Image = new Icon("ui-icon-image");

		/// <summary>
		/// References the jQuery UI "ui-icon-video" class for a themed video symbol.
		/// </summary>
		public static readonly Icon Video = new Icon("ui-icon-video");

		/// <summary>
		/// References the jQuery UI "ui-icon-script" class for a themed script symbol.
		/// </summary>
		public static readonly Icon Script = new Icon("ui-icon-script");

		/// <summary>
		/// References the jQuery UI "ui-icon-alert" class for a themed alert/warning symbol.
		/// </summary>
		public static readonly Icon Alert = new Icon("ui-icon-alert");

		/// <summary>
		/// References the jQuery UI "ui-icon-info" class for a themed info symbol.
		/// </summary>
		public static readonly Icon Info = new Icon("ui-icon-info");

		/// <summary>
		/// References the jQuery UI "ui-icon-notice" class for a themed notice/exclamation point symbol.
		/// </summary>
		public static readonly Icon Notice = new Icon("ui-icon-notice");

		/// <summary>
		/// References the jQuery UI "ui-icon-help" class for a themed help/question mark symbol.
		/// </summary>
		public static readonly Icon Help = new Icon("ui-icon-help");

		/// <summary>
		/// References the jQuery UI "ui-icon-check" class for a themed checkmark symbol.
		/// </summary>
		public static readonly Icon Check = new Icon("ui-icon-check");

		/// <summary>
		/// References the jQuery UI "ui-icon-bullet" class for a themed filled bullet symbol.
		/// </summary>
		public static readonly Icon Bullet = new Icon("ui-icon-bullet");

		/// <summary>
		/// References the jQuery UI "ui-icon-radio-off" class for a themed deselected radio button/thick circle symbol.
		/// </summary>
		public static readonly Icon RadioOff = new Icon("ui-icon-radio-off");

		/// <summary>
		/// References the jQuery UI "ui-icon-radio-on" class for a themed selected radio button/thin circle symbol.
		/// </summary>
		public static readonly Icon RadioOn = new Icon("ui-icon-radio-on");

		/// <summary>
		/// References the jQuery UI "ui-icon-pin-w" class for a themed pushpin symbol pointing to the left.
		/// </summary>
		public static readonly Icon PinW = new Icon("ui-icon-pin-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-pin-s" class for a themed pushpin symbol pointing downward.
		/// </summary>
		public static readonly Icon PinS = new Icon("ui-icon-pin-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-play" class for a themed media play symbol.
		/// </summary>
		public static readonly Icon Play = new Icon("ui-icon-play");

		/// <summary>
		/// References the jQuery UI "ui-icon-pause" class for a themed media pause symbol.
		/// </summary>
		public static readonly Icon Pause = new Icon("ui-icon-pause");

		/// <summary>
		/// References the jQuery UI "ui-icon-seek-next" class for a themed media seek next symbol.
		/// </summary>
		public static readonly Icon SeekNext = new Icon("ui-icon-seek-next");

		/// <summary>
		/// References the jQuery UI "ui-icon-seek-prev" class for a themed media seek previous symbol.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Prev", Justification = "Using jQuery UI names")]
		public static readonly Icon SeekPrev = new Icon("ui-icon-seek-prev");

		/// <summary>
		/// References the jQuery UI "ui-icon-seek-end" class for a themed media seek end symbol.
		/// </summary>
		public static readonly Icon SeekEnd = new Icon("ui-icon-seek-end");

		/// <summary>
		/// References the jQuery UI "ui-icon-seek-start" class for a themed media seek beginning symbol.
		/// </summary>
		public static readonly Icon SeekStart = new Icon("ui-icon-seek-start");

		/// <summary>
		/// References the jQuery UI "ui-icon-stop" class for a themed media stop symbol.
		/// </summary>
		public static readonly Icon Stop = new Icon("ui-icon-stop");

		/// <summary>
		/// References the jQuery UI "ui-icon-eject" class for a themed media eject symbol.
		/// </summary>
		public static readonly Icon Eject = new Icon("ui-icon-eject");

		/// <summary>
		/// References the jQuery UI "ui-icon-volume-off" class for a themed muted speaker symbol.
		/// </summary>
		public static readonly Icon VolumeOff = new Icon("ui-icon-volume-off");

		/// <summary>
		/// References the jQuery UI "ui-icon-volume-on" class for a themed speaker symbol.
		/// </summary>
		public static readonly Icon VolumeOn = new Icon("ui-icon-volume-on");

		/// <summary>
		/// References the jQuery UI "ui-icon-power" class for a themed power symbol.
		/// </summary>
		public static readonly Icon Power = new Icon("ui-icon-power");

		/// <summary>
		/// References the jQuery UI "ui-icon-signal-diag" class for a themed diagonal signal symbol.
		/// </summary>
		[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Diag", Justification = "Using jQuery UI names")]
		public static readonly Icon SignalDiag = new Icon("ui-icon-signal-diag");

		/// <summary>
		/// References the jQuery UI "ui-icon-symbol" class for a themed signal symbol.
		/// </summary>
		public static readonly Icon Signal = new Icon("ui-icon-signal");

		/// <summary>
		/// References the jQuery UI "ui-icon-battery-0" class for a themed empty (0/3) battery symbol.
		/// </summary>
		public static readonly Icon Battery0 = new Icon("ui-icon-battery-0");

		/// <summary>
		/// References the jQuery UI "ui-icon-battery-1" class for a themed nearly-empty (1/3) battery symbol.
		/// </summary>
		public static readonly Icon Battery1 = new Icon("ui-icon-battery-1");

		/// <summary>
		/// References the jQuery UI "ui-icon-battery-2" class for a themed nearly-full (2/3) battery symbol.
		/// </summary>
		public static readonly Icon Battery2 = new Icon("ui-icon-battery-2");

		/// <summary>
		/// References the jQuery UI "ui-icon-battery-3" class for a themed full (3/3) battery symbol.
		/// </summary>
		public static readonly Icon Battery3 = new Icon("ui-icon-battery-3");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-plus" class for a themed plus symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CirclePlus = new Icon("ui-icon-circle-plus");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-minus" class for a themed minus symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleMinus = new Icon("ui-icon-circle-minus");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-close" class for a themed close (X) symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleClose = new Icon("ui-icon-circle-close");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-triangle-e" class for a themed triangle pointing to the right and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleTriangleE = new Icon("ui-icon-circle-triangle-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-triangle-s" class for a themed triangle pointing downward and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleTriangleS = new Icon("ui-icon-circle-triangle-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-triangle-w" class for a themed triangle pointing to the left and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleTriangleW = new Icon("ui-icon-circle-triangle-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-triangle-n" class for a themed triangle pointing upward and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleTriangleN = new Icon("ui-icon-circle-triangle-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-arrow-e" class for a themed arrow pointing to the right and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleArrowE = new Icon("ui-icon-circle-arrow-e");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-arrow-s" class for a themed arrow pointing downward and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleArrowS = new Icon("ui-icon-circle-arrow-s");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-arrow-w" class for a themed arrow pointing to the left and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleArrowW = new Icon("ui-icon-circle-arrow-w");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-arrow-n" class for a themed arrow pointing upward and overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleArrowN = new Icon("ui-icon-circle-arrow-n");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-zoomin" class for a themed zoom in symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleZoomIn = new Icon("ui-icon-circle-zoomin");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-zoomout" class for a themed zoom out symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleZoomOut = new Icon("ui-icon-circle-zoomout");

		/// <summary>
		/// References the jQuery UI "ui-icon-circle-check" class for a themed checkmark symbol overlayed on a circle.
		/// </summary>
		public static readonly Icon CircleCheck = new Icon("ui-icon-circle-check");

		/// <summary>
		/// References the jQuery UI "ui-icon-circlesmall-plus" class for a small themed plus symbol overlayed on a outlined box.
		/// </summary>
		public static readonly Icon CircleSmallPlus = new Icon("ui-icon-circlesmall-plus");

		/// <summary>
		/// References the jQuery UI "ui-icon-circlesmall-minus" class for a small themed minus symbol overlayed on a outlined box.
		/// </summary>
		public static readonly Icon CircleSmallMinus = new Icon("ui-icon-circlesmall-minus");

		/// <summary>
		/// References the jQuery UI "ui-icon-circlesmall-close" class for a small themed close (X) symbol overlayed on a outlined box.
		/// </summary>
		public static readonly Icon CircleSmallClose = new Icon("ui-icon-circlesmall-close");

		/// <summary>
		/// References the jQuery UI "ui-icon-squaresmall-plus" class for a small themed plus symbol overlayed on filled box.
		/// </summary>
		public static readonly Icon SquareSmallPlus = new Icon("ui-icon-squaresmall-plus");

		/// <summary>
		/// References the jQuery UI "ui-icon-squaresmall-minus" class for a small themed minus symbol overlayed on filled box.
		/// </summary>
		public static readonly Icon SquareSmallMinus = new Icon("ui-icon-squaresmall-minus");

		/// <summary>
		/// References the jQuery UI "ui-icon-squaresmall-close" class for a small themed close (X) symbol overlayed on filled box.
		/// </summary>
		public static readonly Icon SquareSmallClose = new Icon("ui-icon-squaresmall-close");

		/// <summary>
		/// References the jQuery UI "ui-icon-grip-dotted-vertical" class for a themed dotted vertical grip symbol.
		/// </summary>
		public static readonly Icon GripDottedVertical = new Icon("ui-icon-grip-dotted-vertical");

		/// <summary>
		/// References the jQuery UI "ui-icon-grip-dotted-horizontal" class for a themed dotted horizontal grip symbol.
		/// </summary>
		public static readonly Icon GripDottedHorizontal = new Icon("ui-icon-grip-dotted-horizontal");

		/// <summary>
		/// References the jQuery UI "ui-icon-grip-solid-vertical" class for a themed solid vertical grip symbol.
		/// </summary>
		public static readonly Icon GripSolidVertical = new Icon("ui-icon-grip-solid-vertical");

		/// <summary>
		/// References the jQuery UI "ui-icon-grip-solid-horizontal" class for a themed solid horizontal grip symbol.
		/// </summary>
		public static readonly Icon GripSolidHorizontal = new Icon("ui-icon-grip-solid-horizontal");

		/// <summary>
		/// References the jQuery UI "ui-icon-gripsmall-diagonal-se" class for a small themed dotted corner grip symbol.
		/// </summary>
		public static readonly Icon GripSmallDiagonalSE = new Icon("ui-icon-gripsmall-diagonal-se");

		/// <summary>
		/// References the jQuery UI "ui-icon-grip-diagonal-se" class for a themed dotted corner grip symbol.
		/// </summary>
		public static readonly Icon GripDiagonalSE = new Icon("ui-icon-grip-diagonal-se");

		#endregion


		#region Fields

		string cssClass;

		#endregion


		#region Constructors

		/// <summary>
		/// Initializes a new instance of the <see cref="Icon"/> using either the standard or a custom CSS class.
		/// </summary>
		/// <param name="cssClass">The CSS class defining the icon.</param>
		/// <exception cref="ArgumentNullException">Value cannot be null.</exception>
		/// <exception cref="ArgumentException">Value is required.</exception>
		public Icon(string cssClass) {
			if(cssClass == null) throw new ArgumentNullException("cssClass");
			if(cssClass.Length == 0) throw new ArgumentException("A value is required.", "cssClass");

			this.cssClass = cssClass;
		}

		#endregion


		#region Properties

		/// <summary>
		/// Gets the CSS class for the symbol to use.
		/// </summary>
		public string CssClass {
			get { return cssClass; }
		}

		#endregion


		#region Methods: Object management

		/// <summary>
		/// Determines whether or not the specified object is equal to the current <see cref="Icon"/> value.
		/// </summary>
		/// <param name="obj">The <see cref="Object"/> to compare.</param>
		/// <returns>Whether or not the provided object is equal.</returns>
		public override bool Equals(object obj) {
			if(obj is Icon) return this == (Icon)obj;
			return false;
		}

		/// <summary>
		/// Determines whether or not the specified Icon is equal to the current <see cref="Icon"/> value.
		/// </summary>
		/// <param name="other">The <see cref="Icon"/> to compare.</param>
		/// <returns>Whether or not the provided value is equal.</returns>
		public bool Equals(Icon other) {
			return this == other;
		}

		/// <summary>
		/// Serves as a hash function for <see cref="Icon"/>.
		/// </summary>
		/// <returns>The hash value associated with the contained data.</returns>
		public override int GetHashCode() {
			return (cssClass ?? string.Empty).GetHashCode();
		}

		/// <summary>
		/// Returns a <see cref="String"/> that represents the current <see cref="Icon"/> value.
		/// </summary>
		/// <returns>The string representation.</returns>
		public override string ToString() {
			return cssClass ?? string.Empty;
		}

		#endregion


		#region Operators

		/// <summary>
		/// Compares the equality of two <see cref="Icon"/> values.
		/// </summary>
		/// <param name="value0">The first value.</param>
		/// <param name="value1">The second value.</param>
		/// <returns>Whether or not the two values are equal.</returns>
		public static bool operator ==(Icon value0, Icon value1) {
			return value0.cssClass == value1.cssClass;
		}

		/// <summary>
		/// Compares the inequality of two <see cref="JQueryControls"/>.Icon values.
		/// </summary>
		/// <param name="value0">The first value.</param>
		/// <param name="value1">The second value.</param>
		/// <returns>Whether or not the two values are distinct.</returns>
		public static bool operator !=(Icon value0, Icon value1) {
			return value0.cssClass != value1.cssClass;
		}

		/// <summary>
		/// Returns a literal JavaScript value used to represent the server value on the client.
		/// </summary>
		/// <returns>The client script value.</returns>
		public string ToClientSource() {
			return (cssClass ?? string.Empty).ToClientSource();
		}

		#endregion


	}

}